﻿Imports VN.INS.BL.BC
Imports System.Data

Partial Class Devida_AfinancieroMensual
    Inherits System.Web.UI.Page

    Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
        If (Not (Page.IsPostBack)) Then
            'Obtenemos los parametros
            ViewState("Nombre") = Request.QueryString("Nombre").ToString
            ViewState("POA") = Request.QueryString("POA").ToString
            ViewState("PPER") = Request.QueryString("PPER").ToString
            ViewState("PPER_ID") = Request.QueryString("PPER_ID").ToString
            ViewState("Ejecutor") = Request.QueryString("Ejecutor").ToString
            ViewState("Eje_Des") = Request.QueryString("Eje_Des").ToString
            ViewState("Nuevo") = Request.QueryString("Nuevo").ToString
            ViewState("Persona") = Request.QueryString("Persona").ToString
            'Llenamos datos de cabecera
            lblPPER.Text = ViewState("PPER")
            lblActividad.Text = ViewState("Nombre")
            lblEjecutor.Text = ViewState("Eje_Des")
            CargarSemaforo()
            ddlSemaforo.SelectedValue = "1"
            txtColor.BackColor = Drawing.Color.Green

            Dim objGeneral As GeneralBC
            Dim strFecha As String = "#"
            Try
                objGeneral = New GeneralBC
                'Traemos la fecha (codigo y descripcion) activa
                strFecha = objGeneral.FechaAvanceMensual()
                If strFecha Is Nothing Then 'Si no hay ninguna fecha activa capturamos la de la grilla
                    ViewState("Periodo") = Request.QueryString("CodPeriodo").ToString
                    lblFecha.Text = Request.QueryString("Periodo").ToString
                Else    'Si hay fecha activa
                    ' Separamos la cadena en partes
                    Dim words As String() = strFecha.Split(New Char() {"#"c})
                    ' Recorremos todas las partes
                    Dim word As String
                    Dim i As Int16 = 0
                    For Each word In words
                        i = i + 1
                        If i = 1 Then ' codigo de periodo
                            ViewState("Periodo") = word
                        End If
                        If i = 2 Then ' descripcion de periodo
                            lblFecha.Text = word
                            Exit For
                        End If
                    Next
                End If
            Catch ex As Exception
                Throw ex
            End Try
            Dim objReporte As ReporteBC
            Dim objDt As DataTable
            Try
                objReporte = New ReporteBC
                If ViewState("Nuevo") = "1" Then        ' Si es nuevo, cargamos solo presupuestado y programado
                    lblPresupuestado.Text = String.Format("{0:# ### ###,##}", objReporte.MontoPresupuestado(ViewState("POA")).ToString)
                    txtProgramado.Text = String.Format("{0:# ### ###,##}", objReporte.MontoProgramado(ViewState("POA").ToString, ViewState("Periodo")))
                ElseIf ViewState("Nuevo") = "0" Then    ' Si es edicion, cargamos todos los datos
                    objDt = New DataTable
                    lblPresupuestado.Text = String.Format("{0:# ### ###,##}", objReporte.MontoPresupuestado(ViewState("POA")).ToString)
                    objDt = objReporte.CargaAvanceFinancieroMensual(ViewState("POA"), ViewState("Periodo"))
                    ddlSemaforo.SelectedValue = objDt.Rows(0).Item("SEMAFORO")
                    ddlSemaforo_SelectedIndexChanged(sender, e)
                    txtProgramado.Text = objDt.Rows(0).Item("MONTO_PROGRAMADO").ToString
                    txtComprometido.Text = objDt.Rows(0).Item("MONTO_COMPROMETIDO").ToString
                    txtDevengado.Text = objDt.Rows(0).Item("MONTO_DEVENGADO").ToString
                    txtGirado.Text = objDt.Rows(0).Item("MONTO_GIRADO").ToString
                    txtObs.Text = objDt.Rows(0).Item("OBSERVACIONES").ToString
                    txtAcciones.Text = objDt.Rows(0).Item("ACCION").ToString
                End If
            Catch ex As Exception
                Throw ex
            End Try
        End If
    End Sub

    'Carga de datos de combo semaforo
    Public Sub CargarSemaforo()
        Dim objGeneral As GeneralBC
        Dim objDt As DataTable
        Try
            objGeneral = New GeneralBC
            objDt = New DataTable
            objDt = objGeneral.ListaTablaGeneral("SEMAFORO")
            ddlSemaforo.DataSource = objDt
            ddlSemaforo.DataTextField = "DESCRIPCION"
            ddlSemaforo.DataValueField = "CODIGO"
            ddlSemaforo.DataBind()
        Catch ex As Exception
            Throw ex
        End Try
    End Sub

    Protected Sub ddlSemaforo_SelectedIndexChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles ddlSemaforo.SelectedIndexChanged
        If ddlSemaforo.SelectedValue = "1" Then         ' si se selecciona valor 1 pintamos el cuadro de verde
            txtColor.BackColor = Drawing.Color.Green
        ElseIf ddlSemaforo.SelectedValue = "2" Then     ' si se selecciona valor 2 pintamos el cuadro de ambar
            txtColor.BackColor = Drawing.Color.Orange
        ElseIf ddlSemaforo.SelectedValue = "3" Then     ' si se selecciona valor 3 pintamos el cuadro de rojo
            txtColor.BackColor = Drawing.Color.Red
        ElseIf ddlSemaforo.SelectedValue = "4" Then     ' si se selecciona valor 4 pintamos el cuadro de blanco (ninguno)
            txtColor.BackColor = Drawing.Color.White
        End If
    End Sub

    Protected Sub btn_guardar_Click(ByVal sender As Object, ByVal e As System.Web.UI.ImageClickEventArgs) Handles btn_guardar.Click
        'Verificamos ...
        If txtObs.Text.Trim = "" Then   'que exista onbservacion
            alerta.Mostrar_Alerta("Aviso", "Debe ingresar la observación")
            Exit Sub
        ElseIf txtAcciones.Text.Trim = "" Then  'que exista acciones
            alerta.Mostrar_Alerta("Aviso", "Debe ingresar la acción")
            Exit Sub
        ElseIf Convert.ToDecimal(lblPresupuestado.Text) < Convert.ToDecimal(IIf(txtProgramado.Text.Trim = "", 0, txtProgramado.Text)) Then  'que el monto presupuestado >= programado 
            alerta.Mostrar_Alerta("Aviso", "El monto Programado no de be ser mayor al Presupuesto total")
            Exit Sub
        ElseIf Convert.ToDecimal(lblPresupuestado.Text) < Convert.ToDecimal(IIf(txtComprometido.Text.Trim = "", 0, txtComprometido.Text)) Then  'que el monto presupuestado >= comprometido 
            alerta.Mostrar_Alerta("Aviso", "El monto Comprometido no de be ser mayor al Presupuesto total")
            Exit Sub
        ElseIf Convert.ToDecimal(lblPresupuestado.Text) < Convert.ToDecimal(IIf(txtDevengado.Text.Trim = "", 0, txtDevengado.Text)) Then    'que el monto presupuestado >= devengado 
            alerta.Mostrar_Alerta("Aviso", "El monto Devengado no de be ser mayor al Presupuesto total")
            Exit Sub
        ElseIf Convert.ToDecimal(lblPresupuestado.Text) < Convert.ToDecimal(IIf(txtGirado.Text.Trim = "", 0, txtGirado.Text)) Then  'que el monto presupuestado >= girado 
            alerta.Mostrar_Alerta("Aviso", "El monto Girado no de be ser mayor al Presupuesto total")
            Exit Sub
        ElseIf Convert.ToDecimal(IIf(txtDevengado.Text.Trim = "", 0, txtDevengado.Text)) < Convert.ToDecimal(IIf(txtGirado.Text.Trim = "", 0, txtGirado.Text)) Then 'que el monto devengado >= girado 
            alerta.Mostrar_Alerta("Aviso", "El monto Girado no de be ser mayor al monto Devengado")
            Exit Sub
        Else
            Dim objReporte As ReporteBC
            Try
                objReporte = New ReporteBC
                If ViewState("Nuevo") = "1" Then 'Nuevo => Insertamos
                    objReporte.Insertar_Reporte_Mensual(ViewState("Periodo"), ViewState("POA"), ViewState("PPER_ID"), ViewState("Ejecutor"), txtAcciones.Text.ToUpper, "1", Convert.ToDouble(IIf(lblPresupuestado.Text = "", 0, lblPresupuestado.Text)), Convert.ToDouble(IIf(txtComprometido.Text = "", 0, txtComprometido.Text)), Convert.ToDouble(IIf(txtDevengado.Text = "", 0, txtDevengado.Text)), Convert.ToDouble(IIf(txtGirado.Text = "", 0, txtGirado.Text)), Convert.ToDouble(IIf(txtProgramado.Text = "", 0, txtProgramado.Text)), txtObs.Text.ToUpper, ddlSemaforo.SelectedValue.ToString, ViewState("Persona"))
                ElseIf ViewState("Nuevo") = "0" Then 'Edicion => Actualizamos
                    objReporte.Actualizar_Reporte_Mensual(ViewState("Periodo"), ViewState("POA"), txtAcciones.Text.ToUpper, Convert.ToDouble(IIf(txtComprometido.Text = "", 0, txtComprometido.Text)), Convert.ToDouble(IIf(txtDevengado.Text = "", 0, txtDevengado.Text)), Convert.ToDouble(IIf(txtGirado.Text = "", 0, txtGirado.Text)), Convert.ToDouble(IIf(txtProgramado.Text = "", 0, txtProgramado.Text)), txtObs.Text.ToUpper, ddlSemaforo.SelectedValue.ToString, ViewState("Persona"))
                End If
                Response.Redirect("ListaAvancesMensual.aspx")
            Catch ex As Exception
                Throw ex
            End Try
        End If
    End Sub

    Protected Sub btnCerrar_Click(ByVal sender As Object, ByVal e As System.Web.UI.ImageClickEventArgs) Handles btnCerrar.Click
        Session("AFDetalle") = 1
        Response.Redirect("ListaAvancesMensual.aspx")
    End Sub

End Class
